import { getToken, setToken, removeToken } from '@/utils/auth'
import { login, getUserpostAPI } from '@/api/user'

// 状态
const state = {
  userInfo: {},
  token: getToken() || ''
}

// 修改状态
const mutations = {
  // 设置token
  setToken(state, token) {
    state.token = token // 设置token  只是修改state的数据  123 =》 1234
    // vuex变化 => 缓存数据
    setToken(token) // vuex和 缓存数据的同步
  },
  // 删除缓存
  removeToken(state) {
    state.token = null // 删除vuex的token
    removeToken() // 先清除 vuex  再清除缓存 vuex和 缓存数据的同步
  },
  setUserInfo(state, data) {
    state.userInfo = { ...data }
  },
  removeUserInfo(state) {
    state.userInfo = {}
  }
}

// 执行异步
const actions = {
  async login({ commit }, data) {
    console.log(data)
    const { token } = await login(data)
    commit('setToken', token)
  },
  logout({ commit }) {
    commit('removeToken')
    commit('removeUserInfo')
  },
  async getUserpropfileAll({ commit }) {
    const res = await getUserpostAPI()
    commit('setUserInfo', res)
    return res
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
